[アップデート] Amazon Aurora PostgreSQL 16.6 がリリースされたので、Babelfish 4.4 のアップデート内容を確認してみた

[アップデート] Amazon Aurora PostgreSQL 16.6 がリリースされたので、Babelfish 4.4 のアップデート内容を確認してみた

Clock Icon2025.01.16

いわさです。

昨年末のことですが、Aurora PostgreSQL 16.6 がリリースされています。

https://aws.amazon.com/about-aws/whats-new/2024/12/amazon-aurora-postgresql-supports-new-versions/

PostgreSQL 16.6 のコミュニティリリースは 2024年11月21日です。
1ヶ月遅れくらいで Aurora PostgreSQL へ実装されました。

https://www.postgresql.org/about/news/postgresql-172-166-1510-1415-1318-and-1222-released-2965/

今回の Aurora PostgreSQL のバージョンアップにあわせて搭載されている「Babelfish」という Microsoft SQL Server 互換の機能も 4.4.0 に更新されました。いくつか新しい機能が解放されているので見てみます。

62DDEB33-C442-4DAD-B679-B83C5EF86AF6.png

あれ、Aurora PostgreSQL 16.5 は?

Aurora PostgreSQL は 16.5 をサポートしていません。
背景ですが、PostgreSQL リリースタイミングが関係しています。
2024年11月14日に 16.5 がリリースされたのですが、その1週間後の2024年11月21日に16.6がリリースされています。通常のリリースサイクルではないですね。

https://www.postgresql.org/docs/release/16.5/

これ、何があったかというと、16.5 リリース直後に一部問題が見つかり、2024年11月15日に以下のアナウンスがされ、16.6 が計画外に早まってリリースされたということのようです。

https://www.postgresql.org/about/news/out-of-cycle-release-scheduled-for-november-21-2024-2958/

そのため、Aurora PostgreSQL としては 16.5, 15.9, 14.14, 13.17 がスキップされている形となっています。

Babelfish 4.4.0 を確認する

Babelfish のリリースノートはこちらから確認が可能です。
大きなところだとこれまで出来なかった ALTER FUNCTION が遂に出来るように。

https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraBabelfish.Updates.html

バージョンごとの網羅的な機能一覧はこちらになります。お使いのバージョンで機能がサポートされているか、どのバージョンであれば利用可能なのかを確認したいときにはこちらを確認しましょう。

https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/babelfish-compatibility.supported-functionality-table.html

まずは恒例の Babelfish のバージョン確認から行ってみます。

% psql -h hoge0116aurora4.cluster-cmwpejrsdzfj.ap-northeast-1.rds.amazonaws.com -U postgres -d babelfish_db
Password for user postgres: 
psql (14.15 (Homebrew), server 16.6)
WARNING: psql major version 14, server major version 16.
         Some psql features might not work.
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.

babelfish_db=> SELECT aurora_version() AS aurora_version, version() AS postgresql_version, sys.version() AS Babelfish_compatibility, sys.SERVERPROPERTY('BabelfishVersion') AS Babelfish_Version;
 aurora_version |                                       postgresql_version                                        |                           babelfish_compatibility                           | babelfish_version 
----------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------+-------------------
 16.6.1         | PostgreSQL 16.6 on x86_64-pc-linux-gnu, compiled by x86_64-pc-linux-gnu-gcc (GCC) 9.5.0, 64-bit | Babelfish for Aurora PostgreSQL with SQL Server Compatibility - 12.0.2000.8+| 4.4.0
                |                                                                                                 | Dec 17 2024 00:51:08                                                       +| 
                |                                                                                                 | Copyright (c) Amazon Web Services                                          +| 
                |                                                                                                 | PostgreSQL 16.6 on x86_64-pc-linux-gnu (Babelfish 4.4.0)                    | 
(1 row)

babelfish_db=> 

4.4.0 ですね。12.0.2000 なのは変わらず。

続いて sqlcmd ユーティリティで接続して、データベースを作成しておきます。

% sqlcmd -S hoge0116aurora4.cluster-cmwpejrsdzfj.ap-northeast-1.rds.amazonaws.com -U postgres
Password: 
1> create database hogedb;
2> go
1> use hogedb;
2> go
Changed database context to 'hogedb'.
1> 

ALTER FUNCTION

今回は ALTER FUNCTION を試してみます。

https://learn.microsoft.com/ja-jp/sql/t-sql/statements/alter-function-transact-sql?view=sql-server-ver16

16.4(4.3.0)まではCREATE FUNCTIONは使えたのですが、ALTER FUNCTIONをしようとすると次のようなエラーが発生していたのですよね。

1> ALTER FUNCTION GetHogeNumber()
2> RETURNS int
3> AS
4> BEGIN
5>     RETURN 200
6> END
7> go
Msg 33557097, Level 16, State 1, Server hoge0116aurora-instance-1, Line 1
'ALTER FUNCTION' is not currently supported in Babelfish

まず適当な関数を作成して実行してみます。

1> CREATE FUNCTION GetHogeNumber()
2> RETURNS int
3> AS
4> BEGIN
5>     RETURN 100
6> END
7> go
1> select GetHogeNumber();
2> go
gethogenumber
-------------
          100

(1 rows affected)

4.4.0 でALTER FUNCTIONしてみましょう。どうかな。

1> ALTER FUNCTION GetHogeNumber()
2> RETURNS int
3> AS
4> BEGIN
5>     RETURN 200
6> END
7> go
1> select GetHogeNumber();
2> go
gethogenumber
-------------
          200

(1 rows affected)

良いですね、使えるようになっていました。

さいごに

本日は Amazon Aurora PostgreSQL 16.6 がリリースされたので、Babelfish 4.4 を使って ALTER FUNCTION の挙動を比較してみました。
是非 Babelfish をアップデートして使ってみてください。

余談ですが、今回検証している中で Aurora のインスタンスタイプに Graviton (r7g)を選択すると T-SQL over TDS 接続が出来ないことを確認しています。
これが今回のバージョン固有の問題なのか過去からの問題なのかは確認中です。

以下をよると対応していそうですが...

https://aws.amazon.com/blogs/modernizing-with-aws/babelfish-performance-testing-results/

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.